var express = require('express');
const bodyParser = require('body-parser'); // 引入body-parser模块
var cors = require('cors');
var routes = require('./routes/index');
var filterAPI = require('./config/filterAPI')
var app = express();
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json())

const expressJWT = require('express-jwt');
const { PRIVATE_KEY } = require("./utils/constant");
// 注册 token 验证中间件
app.use(expressJWT({
  // 解析口令, 需要和加密的时候一致
  secret: PRIVATE_KEY,
  // 加密方式: SHA256 加密方式在 express-jwt 里面叫做 HS256
  algorithms: ['HS256']
}).unless({
  // 不需要验证 token 的路径标识符
  path: filterAPI
}))

// 错误处理中间件
app.use((err, req, res, next) => {
  const { url, headers: { Authorization: token } } = req
  if(err.name === 'UnauthorizedError'){
    res.send({
      err
    })
  }
  
})
app.use('/', routes);
if (!module.parent) {
  app.listen('3000', function () {
    console.log("服务开启了localhost:3000");
  });
}
module.exports = app;
